package xml;

import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import org.jdom.Element;
import org.jdom.JDOMException;

/**
 * XML-Reader zum Auslesen von Kategorien aus XML-Files
 * @author Dennis Wittkoetter
 * @version 1.0
 */
public class XMLCategoryReader extends XML {
	
	/**
	 * Konstruiert Reader-Objekt
	 * @param file	Dateiname
	 * @throws IOException Eingabe Ausgabe Fehler
	 * @throws JDOMException XML spezifischer Fehler
	 */
	public XMLCategoryReader(File file) throws JDOMException, IOException {
		super(file);
	}
	
	/**
	 * Konvertiert den Inhalt einer XML in ein fuer Tabellen lesbares Format
	 * @return	Liste mit allen in der XML vorhandenen Kategorien
	 * @throws IOException Eingabe Ausgabe Fehler
	 * @throws JDOMException XML spezifischer Fehler
	 */
	public List<String> convertToTable() throws IOException, JDOMException {
		List<String>ret = new ArrayList<String>();
		
		update();
		@SuppressWarnings("unchecked")
		List<Element> componentList = (List<Element>)root.getChildren();

		for(Element component : componentList)
			ret.add(component.getText());
    
		return ret;
	}
	
	/**
	 * Konvertiert den Inhalt einer XML in ein String Array
	 * @return Array mit allen Kategoriennamen als Strings
	 * @throws JDOMException Eingabe Ausgabe Fehler
	 * @throws IOException XML spezifischer Fehler
	 */
	public String[] convertToStringArray() throws JDOMException, IOException {
		List<String> listRet = new ArrayList<String>();
		
		update();
		@SuppressWarnings("unchecked")
		List<Element> componentList = (List<Element>)root.getChildren();

		for(Element component : componentList)
			listRet.add(component.getText());
		
		String ret[] = new String[listRet.size()];
		for(int i=0; i<ret.length; i++) ret[i] = listRet.get(i);
		return ret;
		
	}

}
